package cn.initcap.designpattern.pattern.behavioral.visitor;

/**
 * 根据不同的visitor对相同的数据产生不同的操作行为（访问者模式的核心）
 *
 * @author initcap
 * @date 2021/10/18 10:08
 */
public class ViewVisitor implements IVisitor {

    /**
     * 访问免费课程，打印所有免费课程名称
     *
     * @param freeCourse
     */
    @Override
    public void visit(FreeBaseCourse freeCourse) {
        System.out.println("查看免费课程:" + freeCourse.getName() + ", 您可以开始学习啦!");
    }

    /**
     * 访问实战课程，打印所有实战课程名称和价格
     *
     * @param codingCourse
     */
    @Override
    public void visit(CodingBaseCourse codingCourse) {
        System.out.println("查看实战课程:" + codingCourse.getName() + " 价格:" + codingCourse.getPrice() + "! 您还没有进行购买，只能查看课程简介!");
    }
}
